import gtk, gobject
import pango
import gettext
_=gettext.gettext

def testua(izenburua, txt, nagusia=None):
    kutxa = gtk.Dialog(izenburua, nagusia, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
                     (gtk.STOCK_OK, gtk.RESPONSE_OK))
    kutxa.set_resizable(True)
    kutxa.set_default_size(650,550)
    testua = gtk.TextView()
    testua.modify_font(pango.FontDescription("Courier 12"))
    testua.get_buffer().set_text(txt)
    testua.set_editable(False)
    testua.show()
    sw = gtk.ScrolledWindow()
    sw.add(testua)
    sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
    sw.show()
    kutxa.vbox.pack_start(sw)
    kutxa.run()
    kutxa.destroy()


def informazioa(testua, nagusia=None):
    """Testu bat erakusten du"""
    dialogoa = gtk.MessageDialog(nagusia, gtk.DIALOG_DESTROY_WITH_PARENT,
                                 gtk.MESSAGE_INFO, gtk.BUTTONS_OK,
                                 testua)
    dialogoa.run()
    dialogoa.destroy()

def lista(izenburua, llista, nagusia=None, headers=False):
    kutxa = gtk.Dialog(izenburua, nagusia, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
                     (gtk.STOCK_OK, gtk.RESPONSE_OK))
    kutxa.set_resizable(True)
    kutxa.set_default_size(320,640)

    testua = gtk.TreeView() 
    zutabea = gtk.TreeViewColumn("", gtk.CellRendererText(), text=0)
    zutabea.set_resizable(True)
    testua.append_column(zutabea)
    testua.set_headers_visible(headers)

    ellista = gtk.ListStore(str)
    testua.set_model(ellista)
    for i in llista:
        ellista.append((i,))

    testua.show()
    sw = gtk.ScrolledWindow()
    sw.add(testua)
    sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
    sw.show()
    kutxa.vbox.pack_start(sw)
    kutxa.run()
    kutxa.destroy()

def hautatu_fitxategia(patroia, gorde=False):
    """Funtzio hau fitxategi bat irekitzeko balio du.
    Ezer ez bada aukeratzen katedialog.run hutsa itzuliko da."""
    akzioa = gorde and gtk.FILE_CHOOSER_ACTION_SAVE or gtk.FILE_CHOOSER_ACTION_OPEN 
    irekitzailea = gtk.FileChooserDialog(title="Hautatu fitxategia"
                , action=akzioa
                , buttons=(gtk.STOCK_CANCEL
                            , gtk.RESPONSE_CANCEL
                            , gorde and gtk.STOCK_SAVE or gtk.STOCK_OPEN
                            , gtk.RESPONSE_OK))
    filtroa = gtk.FileFilter()
    #--------------------

    filtroa.set_name(_("Guztiak"))
    filtroa.add_pattern("*")
    irekitzailea.add_filter(filtroa)
    #--------------------
    filtroa = gtk.FileFilter()
    filtroa.set_name(patroia+_(" fitxategiak"))
    filtroa.add_pattern(patroia)
    irekitzailea.add_filter(filtroa)
 
    erantzuna = None
    if irekitzailea.run() == gtk.RESPONSE_OK:
        erantzuna = irekitzailea.get_filename()
    irekitzailea.destroy()
    return erantzuna     
    

def formularioa(izenburua,g,nagusia=None):
    kutxa = gtk.Dialog(izenburua, nagusia, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OK, gtk.RESPONSE_OK))
    sarrerak = []
    r= None
    for l in g:
        horizontala = gtk.HBox()
        a = gtk.Label(l[0])
        a.show()
        sarrerak.append(gtk.Entry(10))
        sarrerak[-1].set_text(str(l[1]))
        sarrerak[-1].show()
        horizontala.pack_start(a)
        horizontala.pack_start(sarrerak[-1],False,False)
        horizontala.show()
        kutxa.vbox.pack_start(horizontala)
    if kutxa.run() == gtk.RESPONSE_OK:
        r=tuple([int(i.get_text()) for i in sarrerak])
    kutxa.destroy()
    return r


def sarreradialogoa(izenburua, nagusia=None):
    """Funtzio honek testu sarrera dialogo sinple bat erakutsiko du.
    Izenburuan eskatzen dena jarriko du, sarrera kutxa bat eta OK botoia."""
    kutxa = gtk.Dialog(izenburua, nagusia, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, (gtk.STOCK_OK, gtk.RESPONSE_OK))
    testua = gtk.Label(izenburua)
    testua.show()    
    kutxa.vbox.pack_start(testua)
    sarrera = gtk.SpinButton()
    sarrera.set_range(-32768,32767)
    sarrera.set_increments(1,10)
    kutxa.vbox.pack_start(sarrera)
    sarrera.show()
    erantzuna = 0
    while kutxa.run() != gtk.RESPONSE_OK:
        pass
    erantzuna = int(sarrera.get_value())
    kutxa.destroy()
    return erantzuna




